// 1.3. 运算符-逻辑运算符
/**
 * 算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++ 内置了丰富的运算符，并提供了以下类型的运算符：
* 
* 算术运算符
* 关系运算符
* 逻辑运算符
* 位运算符
* 赋值运算符
* 杂项运算符
* 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。
 *
 * ----------------------
 * 逻辑运算符
 下表显示了 C++ 支持的关系逻辑运算符。

假设变量 A 的值为 1，变量 B 的值为 0，则：

运算符	描述	实例
&&	称为逻辑与运算符。如果两个操作数都 true，则条件为 true。	(A && B) 为 false。
||	称为逻辑或运算符。如果两个操作数中有任意一个 true，则条件为 true。	(A || B) 为 true。
!	称为逻辑非运算符。用来逆转操作数的逻辑状态，如果条件为 true 则逻辑非运算符将使其为 false。	!(A && B) 为 true。
 * 
 * 
*/

#include <iostream>

int main(void)
{
  int a, b;
  a = 10;
  b = 21;
  if (10 == a || b < a)
  {
    std::cout << "10 == a || b < a 为真" << std::endl;
  }
  char c;
  c = '\0';
  if (true && c)
  {
  }
  else
  {
    std::cout << "true && c 为假" << std::endl;
  }

  double d = 0.0;
  float f = 0.0;
  if (d)
  {
    std::cout << "d 为真" << std::endl;
  }
  else if (f)
  {
    std::cout << "f 为真" << std::endl;
  }else
  {
    // 走这条
    std::cout << "d（0.0）为假，f （0.0）为假" << std::endl;
  }


  if (d && f)
  {
    std::cout << "d && f 为真" << std::endl;
  }
  else if (d || f)
  {
    std::cout << "d || f 为真" << std::endl;
  }
  else
  {
    // 走这条
    std::cout << "d(0.0) && f(0.0) 为假，d(0.0) || f(0.0) 为假" << std::endl;
  }

  if (!(b < a || false))
  {
    std::cout << "!(b < a || false) 为真" << std::endl;
  }

  c = ' ';
  if(c){
    // 空格为真
    std::cout << "c 为真" << std::endl; // 为真
  }else{
    std::cout << "c 为假" << std::endl;
  }
  if(NULL){

  }else{
    std::cout << "NULL 为假" << std::endl;
  }

  printf("----------end-----------\n");
  return 0;
}